import axios from 'axios'
import { getToken } from '@/utils/auth'

const mimeMap = {
  zip: 'application/zip',
  pdf: 'application/pdf',
  png: 'application/png',
  jpg: 'image/jpeg',
  jpeg: 'image/jpeg',
  xls: 'application/vnd.ms-excel',
  xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  csv: 'application/csv',
  doc: 'application/msword',
  docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
  bmp: 'image/bmp',
  gif: 'image/gif',
}


const baseUrl = process.env.VUE_APP_BASE_API
export function downLoadZip(str, data, filename) {
  console.log('data: ', data);
  console.log('str: ', str);
  var url = baseUrl + str
  axios({
    method: 'post',
    url: url,
    params: data,
    responseType: 'blob',
    headers: { 'Authorization': getToken(), 'content-type': 'application/x-www-form-urlencoded' }
  }).then(res => {
    console.log('res: ', res);
    resolveBlob(res, mimeMap[filename])
  })
}
/**
 * 解析blob响应内容并下载
 * @param {*} res blob响应内容
 * @param {String} mimeType MIME类型
 */
export function resolveBlob(res, mimeType) {
  const aLink = document.createElement('a')
  var blob = new Blob([res.data], { type: mimeType })
  // //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
  var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
  var contentDisposition = decodeURI(res.headers['content-disposition'])
  console.log('contentDisposition: ', contentDisposition);
  var result = patt.exec(contentDisposition)
  console.log('result: ', result);
  var fileName = result[1]
  fileName = fileName.replace(/\"/g, '')
  aLink.href = URL.createObjectURL(blob)
  aLink.setAttribute('download', fileName) // 设置下载文件名称
  document.body.appendChild(aLink)
  aLink.click()
  document.body.removeChild(aLink);
}

export function resolveBlob2(res, map, filename) {
  console.log('filename: ', filename);
  if (!filename) filename = '下载.xlsx'
  const aLink = document.createElement('a')
  var blob = new Blob([res], { type: mimeMap[map] })
  // 视情况而定
  // 1.从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
  // var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
  // var contentDisposition = decodeURI(res.headers['content-disposition'])
  // var result = patt.exec(contentDisposition)
  // var fileName = result[1]
  // fileName = fileName.replace(/\"/g, '')
  aLink.href = URL.createObjectURL(blob)
  aLink.style.display = 'none'
  // 2.直接使用自定义文件名
  // aLink.setAttribute('download', filename.trim()) // 设置下载文件名称
  aLink.download = '下载.xlsx' //指定下载文件名
  // document.body.appendChild(aLink)
  // aLink.click()
  // document.body.removeChild(aLink);
  aLink.click() //触发下载
  URL.revokeObjectURL(aLink.href) //释放URL对象
}

